#define _CRT_SECURE_NO_WANINGS 1
#pragma warning(disable: 4996)
#include<stdio.h>
#include<stdlib.h>

//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int m = 0;
//	scanf("%d", &m);
//	int** p = (int**)malloc(n * sizeof(int*));
//	if (NULL == p)
//	{
//		perror("malloc");
//		return 1;
//	}
//	for(int i = 0;i<n;i++)
//	p[i] = (int*)malloc(m * sizeof(int));
//	for (int i = 0; i < n; i++)
//	{
//		for (int j = 0; j < m; j++)
//		{
//			p[i][j] = i + 1;
//			printf("%d ", p[i][j]);
//		}
//	}
//	for (int i = 0; i < n; i++)
//	{
//		free(p[i]);
//	}
//	free(p);
//	return 0;
//}
//
//int main()
//{
//	int(*a)[2] = (int(*) [2])malloc(sizeof(int) * 9);
//	if (NULL == a)
//	{
//		perror("");
//		return 1;
//	}
//	for (int i = 0; i < 3; i++)
//	{
//		for (int j = 0; j < 3; j++)
//		{
//			a[i][j] = i + j + 1;
//			printf("%d\n", a[i][j]);
//		}
//	}
//	free(a);
//	a = NULL;
//	return 0;
//}

int main()
{
	int* p = (int*)malloc(3 * 3 * sizeof(int));
	if (NULL == p)
	{
		perror("");
		return 1;
	}

	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			printf("%p\n", &p[i * 3 + j]);
		}
	}
	free(p);
	p = NULL;
	return 0;
}